Adding new algos

This commit is contained in:
AlphaX-Projects
2024-02-18 18:12:43 +01:00
parent ce8fb002cc
commit 2d27901f9f
51 changed files with 3343 additions and 46 deletions

View File

@@ -0,0 +1,342 @@
package org.qortal.test;
import org.junit.Before;
import org.junit.Test;
import org.qortal.account.Account;
import org.qortal.account.PrivateKeyAccount;
import org.qortal.asset.Asset;
import org.qortal.block.Block;
import org.qortal.controller.BlockMinter;
import org.qortal.data.account.AccountPenaltyData;
import org.qortal.data.transaction.*;
import org.qortal.repository.DataException;
import org.qortal.repository.Repository;
import org.qortal.repository.RepositoryManager;
import org.qortal.settings.Settings;
import org.qortal.test.common.BlockUtils;
import org.qortal.test.common.Common;
import org.qortal.test.common.TransactionUtils;
import org.qortal.utils.NTP;
import java.util.*;
import static org.junit.Assert.*;
import static org.qortal.test.common.AccountUtils.fee;
public class SelfSponsorshipAlgoV2Tests extends Common {
@Before
public void beforeTest() throws DataException {
Common.useSettings("test-settings-v2-self-sponsorship-algo-v2.json");
NTP.setFixedOffset(Settings.getInstance().getTestNtpOffset());
}
@Test
public void tesTransferAssetsQort() throws DataException {
try (final Repository repository = RepositoryManager.getRepository()) {
// Alice self share online, and will be used to mint the blocks
PrivateKeyAccount aliceSelfShare = Common.getTestAccount(repository, "alice-reward-share");
List<PrivateKeyAccount> onlineAccounts = new ArrayList<>();
onlineAccounts.add(aliceSelfShare);
PrivateKeyAccount bobAccount = Common.getTestAccount(repository, "bob");
PrivateKeyAccount chloeAccount = Common.getTestAccount(repository, "chloe");
PrivateKeyAccount dilbertAccount = Common.getTestAccount(repository, "dilbert");
// Mint blocks
Block block = null;
for (int i = 0; i <= 1; i++)
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Ensure that Bob, Chloe and Dilbert are greater than level 0
assertTrue(new Account(repository, bobAccount.getAddress()).getLevel() > 0);
assertTrue(new Account(repository, chloeAccount.getAddress()).getLevel() > 0);
assertTrue(new Account(repository, dilbertAccount.getAddress()).getLevel() > 0);
// Mint some blocks, until accounts have leveled up
for (int i = 0; i <= 5; i++)
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Ensure that Chloe and Dilbert have more than 20 qort
assertTrue(new Account(repository, chloeAccount.getAddress()).getConfirmedBalance(Asset.QORT) > 20); // 10 for transfer asset, 10 for fee
assertTrue(new Account(repository, dilbertAccount.getAddress()).getConfirmedBalance(Asset.QORT) > 20); // 10 for transfer asset, 10 for fee
// Mint until block 10
while (block.getBlockData().getHeight() < 10)
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
assertEquals(10, (int) block.getBlockData().getHeight());
// Chloe transfer assets to Bob and Dilbert
transferAssets(repository, chloeAccount, bobAccount);
transferAssets(repository, chloeAccount, dilbertAccount);
// Dilbert transfer assets to Bob and Chloe
transferAssets(repository, dilbertAccount, bobAccount);
transferAssets(repository, dilbertAccount, chloeAccount);
// Mint until block 29 (the algo runs at block 30)
while (block.getBlockData().getHeight() < 29)
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
assertEquals(29, (int) block.getBlockData().getHeight());
// Ensure that Bob have no penalties and level 5
assertEquals(0, (int) new Account(repository, bobAccount.getAddress()).getBlocksMintedPenalty());
assertEquals(5, (int)bobAccount.getLevel());
// Ensure that Chloe have no penalties and level 5
assertEquals(0, (int) new Account(repository, chloeAccount.getAddress()).getBlocksMintedPenalty());
assertEquals(5, (int)chloeAccount.getLevel());
// Ensure that Dilbert have no penalties and level6
assertEquals(0, (int) new Account(repository, dilbertAccount.getAddress()).getBlocksMintedPenalty());
assertEquals(6, (int)dilbertAccount.getLevel());
// Mint a block, so the algo runs
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Ensure that Bob, Chloe and Dilbert are now have penalties
assertEquals(-5000000, (int) new Account(repository, bobAccount.getAddress()).getBlocksMintedPenalty());
assertEquals(-5000000, (int) new Account(repository, chloeAccount.getAddress()).getBlocksMintedPenalty());
assertEquals(-5000000, (int) new Account(repository, dilbertAccount.getAddress()).getBlocksMintedPenalty());
// Ensure that Bob, Chloe and Dilbert are now level 0
assertEquals(0, (int) new Account(repository, bobAccount.getAddress()).getLevel());
assertEquals(0, (int) new Account(repository, chloeAccount.getAddress()).getLevel());
assertEquals(0, (int) new Account(repository, dilbertAccount.getAddress()).getLevel());
// Orphan last block
BlockUtils.orphanLastBlock(repository);
// Ensure that Bob, Chloe and Dilbert are now greater than level 0
assertTrue(new Account(repository, bobAccount.getAddress()).getLevel() > 0);
assertTrue(new Account(repository, chloeAccount.getAddress()).getLevel() > 0);
assertTrue(new Account(repository, dilbertAccount.getAddress()).getLevel() > 0);
// Ensure that Bob, Chloe and Dilbert have no penalties again
assertEquals(0, (int) new Account(repository, bobAccount.getAddress()).getBlocksMintedPenalty());
assertEquals(0, (int) new Account(repository, chloeAccount.getAddress()).getBlocksMintedPenalty());
assertEquals(0, (int) new Account(repository, dilbertAccount.getAddress()).getBlocksMintedPenalty());
// Run orphan check - this can't be in afterTest() because some tests access the live db
Common.orphanCheck();
}
}
@Test
public void testSingleTransferPrivsBeforeAlgoBlock() throws DataException {
try (final Repository repository = RepositoryManager.getRepository()) {
// Alice self share online, and will be used to mint the blocks
PrivateKeyAccount aliceSelfShare = Common.getTestAccount(repository, "alice-reward-share");
List<PrivateKeyAccount> onlineAccounts = new ArrayList<>();
onlineAccounts.add(aliceSelfShare);
PrivateKeyAccount bobAccount = Common.getTestAccount(repository, "bob");
// Mint blocks
Block block = null;
for (int i = 0; i <= 5; i++)
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Ensure that Bob have more than 20 qort
assertTrue(new Account(repository, bobAccount.getAddress()).getConfirmedBalance(Asset.QORT) > 20);
// Mint until block 17 (the algo runs at block 20)
while (block.getBlockData().getHeight() < 26)
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
assertEquals(26, (int) block.getBlockData().getHeight());
// Bob then issues a TRANSFER_PRIVS
PrivateKeyAccount recipientAccount = randomTransferPrivs(repository, bobAccount);
// Ensure recipient has no level (actually, no account record) at this point (pre-confirmation)
assertNull(recipientAccount.getLevel());
// Mint a block, so that the TRANSFER_PRIVS confirms
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Now ensure that the TRANSFER_PRIVS recipient has inherited Bob's level, and Bob is at level 0
assertTrue(recipientAccount.getLevel() > 0);
assertEquals(0, (int)bobAccount.getLevel());
assertEquals(0, (int) new Account(repository, recipientAccount.getAddress()).getBlocksMintedPenalty());
// Mint a block, so that we can penalize Bob after transfer privs
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Update blocks minted penalty for Bob
Set<AccountPenaltyData> penalties = new LinkedHashSet<>();
penalties.add(new AccountPenaltyData(bobAccount.getAddress(), -5000000));
repository.getAccountRepository().updateBlocksMintedPenalties(penalties);
// Mint a block, so that we check if Bob got penalized before algo runs
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Ensure Bob got penalized
assertEquals(-5000000, (int) new Account(repository, bobAccount.getAddress()).getBlocksMintedPenalty());
// Mint a block, so the algo runs
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Ensure recipient account has penalty too
assertEquals(-5000000, (int) new Account(repository, recipientAccount.getAddress()).getBlocksMintedPenalty());
assertEquals(0, (int) new Account(repository, recipientAccount.getAddress()).getLevel());
// Orphan last block
BlockUtils.orphanLastBlock(repository);
// Ensure recipient account has no penalty again and has a level greater than 0
assertEquals(0, (int) new Account(repository, recipientAccount.getAddress()).getBlocksMintedPenalty());
assertTrue(new Account(repository, recipientAccount.getAddress()).getLevel() > 0);
// Run orphan check - this can't be in afterTest() because some tests access the live db
Common.orphanCheck();
}
}
@Test
public void testMultipleTransferPrivsBeforeAlgoBlock() throws DataException {
try (final Repository repository = RepositoryManager.getRepository()) {
// Alice self share online, and will be used to mint the blocks
PrivateKeyAccount aliceSelfShare = Common.getTestAccount(repository, "alice-reward-share");
List<PrivateKeyAccount> onlineAccounts = new ArrayList<>();
onlineAccounts.add(aliceSelfShare);
PrivateKeyAccount bobAccount = Common.getTestAccount(repository, "bob");
PrivateKeyAccount chloeAccount = Common.getTestAccount(repository, "chloe");
PrivateKeyAccount dilbertAccount = Common.getTestAccount(repository, "dilbert");
// Mint blocks
Block block = null;
for (int i = 0; i <= 5; i++)
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Ensure that Bob, Chloe and Dilbert have more than 20 qort
assertTrue(new Account(repository, bobAccount.getAddress()).getConfirmedBalance(Asset.QORT) > 20);
assertTrue(new Account(repository, chloeAccount.getAddress()).getConfirmedBalance(Asset.QORT) > 20);
assertTrue(new Account(repository, dilbertAccount.getAddress()).getConfirmedBalance(Asset.QORT) > 20);
// Mint until block 12 (the algo runs at block 20)
while (block.getBlockData().getHeight() < 22)
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
assertEquals(22, (int) block.getBlockData().getHeight());
// Bob then issues a TRANSFER_PRIVS
PrivateKeyAccount recipientAccount1 = randomTransferPrivs(repository, bobAccount);
// Ensure Bob's recipient has no level (actually, no account record) at this point (pre-confirmation)
assertNull(recipientAccount1.getLevel());
// Mint a block, so that Bob's TRANSFER_PRIVS confirms
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Now ensure that the Bob's TRANSFER_PRIVS recipient has inherited Bob's level, and Bob is at level 0
assertTrue(recipientAccount1.getLevel() > 0);
assertEquals(0, (int)bobAccount.getLevel());
assertEquals(0, (int) new Account(repository, recipientAccount1.getAddress()).getBlocksMintedPenalty());
// Mint a block, so that Chloe can issue a TRANSFER_PRIVS
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Chloe then issues a TRANSFER_PRIVS
PrivateKeyAccount recipientAccount2 = randomTransferPrivs(repository, chloeAccount);
// Ensure Chloe's recipient has no level (actually, no account record) at this point (pre-confirmation)
assertNull(recipientAccount2.getLevel());
// Mint a block, so that Chloe's TRANSFER_PRIVS confirms
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Now ensure that the Chloe's TRANSFER_PRIVS recipient has inherited Chloe's level, and Chloe is at level 0
assertTrue(recipientAccount2.getLevel() > 0);
assertEquals(0, (int)chloeAccount.getLevel());
assertEquals(0, (int) new Account(repository, recipientAccount2.getAddress()).getBlocksMintedPenalty());
// Mint a block, so that Dilbert can issue a TRANSFER_PRIVS
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Dilbert then issues a TRANSFER_PRIVS
PrivateKeyAccount recipientAccount3 = randomTransferPrivs(repository, dilbertAccount);
// Ensure Dilbert's recipient has no level (actually, no account record) at this point (pre-confirmation)
assertNull(recipientAccount3.getLevel());
// Mint a block, so that Dilbert's TRANSFER_PRIVS confirms
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Now ensure that the Dilbert's TRANSFER_PRIVS recipient has inherited Dilbert's level, and Dilbert is at level 0
assertTrue(recipientAccount3.getLevel() > 0);
assertEquals(0, (int)dilbertAccount.getLevel());
assertEquals(0, (int) new Account(repository, recipientAccount3.getAddress()).getBlocksMintedPenalty());
// Mint a block, so that we can penalize Bob, Chloe and Dilbert after transfer privs
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Update blocks minted penalty for Bob, Chloe and Dilbert
Set<AccountPenaltyData> penalties = new LinkedHashSet<>();
penalties.add(new AccountPenaltyData(bobAccount.getAddress(), -5000000));
penalties.add(new AccountPenaltyData(chloeAccount.getAddress(), -5000000));
penalties.add(new AccountPenaltyData(dilbertAccount.getAddress(), -5000000));
repository.getAccountRepository().updateBlocksMintedPenalties(penalties);
// Mint a block, so that we check if Bob, Chloe and Dilbert got penalized before algo runs
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Ensure Bob, Chloe and Dilbert got penalized
assertEquals(-5000000, (int) new Account(repository, bobAccount.getAddress()).getBlocksMintedPenalty());
assertEquals(-5000000, (int) new Account(repository, chloeAccount.getAddress()).getBlocksMintedPenalty());
assertEquals(-5000000, (int) new Account(repository, dilbertAccount.getAddress()).getBlocksMintedPenalty());
// Mint a block, so the algo runs
block = BlockMinter.mintTestingBlock(repository, onlineAccounts.toArray(new PrivateKeyAccount[0]));
// Ensure recipients accounts has penalty too
assertEquals(-5000000, (int) new Account(repository, recipientAccount1.getAddress()).getBlocksMintedPenalty());
assertEquals(-5000000, (int) new Account(repository, recipientAccount2.getAddress()).getBlocksMintedPenalty());
assertEquals(-5000000, (int) new Account(repository, recipientAccount3.getAddress()).getBlocksMintedPenalty());
assertEquals(0, (int) new Account(repository, recipientAccount1.getAddress()).getLevel());
assertEquals(0, (int) new Account(repository, recipientAccount2.getAddress()).getLevel());
assertEquals(0, (int) new Account(repository, recipientAccount3.getAddress()).getLevel());
// Orphan last block
BlockUtils.orphanLastBlock(repository);
// Ensure recipients accounts has no penalty again and has a level greater than 0
assertEquals(0, (int) new Account(repository, recipientAccount1.getAddress()).getBlocksMintedPenalty());
assertEquals(0, (int) new Account(repository, recipientAccount2.getAddress()).getBlocksMintedPenalty());
assertEquals(0, (int) new Account(repository, recipientAccount3.getAddress()).getBlocksMintedPenalty());
assertTrue(new Account(repository, recipientAccount1.getAddress()).getLevel() > 0);
assertTrue(new Account(repository, recipientAccount2.getAddress()).getLevel() > 0);
assertTrue(new Account(repository, recipientAccount3.getAddress()).getLevel() > 0);
// Run orphan check - this can't be in afterTest() because some tests access the live db
Common.orphanCheck();
}
}
private static void transferAssets(Repository repository, PrivateKeyAccount senderAccount, PrivateKeyAccount recipientAccount) throws DataException {
for (int i = 0; i < 5; i++) {
// Generate new asset transfers from sender to recipient
BaseTransactionData baseTransactionData = new BaseTransactionData(NTP.getTime(), 0, senderAccount.getLastReference(), senderAccount.getPublicKey(), fee, null);
TransactionData transactionData;
transactionData = new TransferAssetTransactionData(baseTransactionData, recipientAccount.getAddress(), 1, 0);
TransactionUtils.signAndImportValid(repository, transactionData, senderAccount); // updates paymentData's signature
}
}
private static PrivateKeyAccount randomTransferPrivs(Repository repository, PrivateKeyAccount senderAccount) throws DataException {
// Generate random recipient account
byte[] randomPrivateKey = new byte[32];
new Random().nextBytes(randomPrivateKey);
PrivateKeyAccount recipientAccount = new PrivateKeyAccount(repository, randomPrivateKey);
BaseTransactionData baseTransactionData = new BaseTransactionData(NTP.getTime(), 0, senderAccount.getLastReference(), senderAccount.getPublicKey(), fee, null);
TransactionData transactionData = new TransferPrivsTransactionData(baseTransactionData, recipientAccount.getAddress());
TransactionUtils.signAndImportValid(repository, transactionData, senderAccount);
return recipientAccount;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -19,6 +19,8 @@
"onlineAccountSignaturesMaxLifetime": 86400000,
"selfSponsorshipAlgoV1SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
@@ -82,14 +84,14 @@
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 99999999,
"selfSponsorshipAlgoV2Height": 9999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950,
"penaltyFixHeight": 9999999
"enableTransferPrivsTimestamp": 9999999999950
},
"genesisInfo": {
"version": 4,

View File

@@ -23,6 +23,8 @@
"onlineAccountSignaturesMaxLifetime": 86400000,
"selfSponsorshipAlgoV1SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
@@ -85,14 +87,14 @@
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 99999999,
"selfSponsorshipAlgoV2Height": 9999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950,
"penaltyFixHeight": 9999999
"enableTransferPrivsTimestamp": 9999999999950
},
"genesisInfo": {
"version": 4,

View File

@@ -24,6 +24,8 @@
"onlineAccountsModulusV2Timestamp": 9999999999999,
"selfSponsorshipAlgoV1SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
@@ -86,14 +88,14 @@
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 99999999,
"selfSponsorshipAlgoV2Height": 9999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950,
"penaltyFixHeight": 9999999
"enableTransferPrivsTimestamp": 9999999999950
},
"genesisInfo": {
"version": 4,

View File

@@ -24,6 +24,8 @@
"onlineAccountsModulusV2Timestamp": 9999999999999,
"selfSponsorshipAlgoV1SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
@@ -86,14 +88,14 @@
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 99999999,
"selfSponsorshipAlgoV2Height": 9999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950,
"penaltyFixHeight": 9999999
"enableTransferPrivsTimestamp": 9999999999950
},
"genesisInfo": {
"version": 4,

View File

@@ -24,6 +24,8 @@
"onlineAccountsModulusV2Timestamp": 9999999999999,
"selfSponsorshipAlgoV1SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 9999999999999,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
@@ -86,14 +88,14 @@
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 9999999999999,
"unconfirmableRewardSharesHeight": 99999999,
"selfSponsorshipAlgoV2Height": 9999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950,
"penaltyFixHeight": 9999999
"enableTransferPrivsTimestamp": 9999999999950
},
"genesisInfo": {
"version": 4,

View File

@@ -24,6 +24,8 @@
"onlineAccountsModulusV2Timestamp": 9999999999999,
"selfSponsorshipAlgoV1SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
@@ -86,14 +88,14 @@
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 99999999,
"selfSponsorshipAlgoV2Height": 9999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950,
"penaltyFixHeight": 9999999
"enableTransferPrivsTimestamp": 9999999999950
},
"genesisInfo": {
"version": 4,

View File

@@ -24,6 +24,8 @@
"onlineAccountsModulusV2Timestamp": 9999999999999,
"selfSponsorshipAlgoV1SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
@@ -87,14 +89,14 @@
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 99999999,
"selfSponsorshipAlgoV2Height": 9999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950,
"penaltyFixHeight": 9999999
"enableTransferPrivsTimestamp": 9999999999950
},
"genesisInfo": {
"version": 4,

View File

@@ -24,6 +24,8 @@
"onlineAccountsModulusV2Timestamp": 9999999999999,
"selfSponsorshipAlgoV1SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
@@ -86,14 +88,14 @@
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 99999999,
"selfSponsorshipAlgoV2Height": 9999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950,
"penaltyFixHeight": 9999999
"enableTransferPrivsTimestamp": 9999999999950
},
"genesisInfo": {
"version": 4,

View File

@@ -24,6 +24,8 @@
"onlineAccountsModulusV2Timestamp": 9999999999999,
"selfSponsorshipAlgoV1SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
@@ -86,14 +88,14 @@
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 99999999,
"selfSponsorshipAlgoV2Height": 9999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950,
"penaltyFixHeight": 9999999
"enableTransferPrivsTimestamp": 9999999999950
},
"genesisInfo": {
"version": 4,

View File

@@ -24,6 +24,8 @@
"onlineAccountsModulusV2Timestamp": 9999999999999,
"selfSponsorshipAlgoV1SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
@@ -86,14 +88,14 @@
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 500,
"selfSponsorshipAlgoV2Height": 9999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950,
"penaltyFixHeight": 9999999
"enableTransferPrivsTimestamp": 9999999999950
},
"genesisInfo": {
"version": 4,

View File

@@ -23,6 +23,8 @@
"onlineAccountSignaturesMaxLifetime": 86400000,
"selfSponsorshipAlgoV1SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
@@ -86,14 +88,14 @@
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 99999999,
"selfSponsorshipAlgoV2Height": 9999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950,
"penaltyFixHeight": 9999999
"enableTransferPrivsTimestamp": 9999999999950
},
"genesisInfo": {
"version": 4,

View File

@@ -24,6 +24,8 @@
"onlineAccountsModulusV2Timestamp": 9999999999999,
"selfSponsorshipAlgoV1SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
@@ -86,14 +88,14 @@
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 20,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 99999999,
"selfSponsorshipAlgoV2Height": 9999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950,
"penaltyFixHeight": 9999999
"enableTransferPrivsTimestamp": 9999999999950
},
"genesisInfo": {
"version": 4,

View File

@@ -0,0 +1,132 @@
{
"isTestChain": true,
"blockTimestampMargin": 500,
"transactionExpiryPeriod": 86400000,
"maxBlockSize": 2097152,
"maxBytesPerUnitFee": 0,
"unitFees": [
{ "timestamp": 0, "fee": "0.00000001" }
],
"nameRegistrationUnitFees": [
{ "timestamp": 0, "fee": "0.00000001" },
{ "timestamp": 1645372800000, "fee": "5" }
],
"requireGroupForApproval": false,
"minAccountLevelToRewardShare": 5,
"maxRewardSharesPerFounderMintingAccount": 20,
"maxRewardSharesByTimestamp": [
{ "timestamp": 0, "maxShares": 20 },
{ "timestamp": 9999999999999, "maxShares": 3 }
],
"founderEffectiveMintingLevel": 10,
"onlineAccountSignaturesMinLifetime": 3600000,
"onlineAccountSignaturesMaxLifetime": 86400000,
"onlineAccountsModulusV2Timestamp": 9999999999999,
"selfSponsorshipAlgoV1SnapshotTimestamp": 0,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
"blockRewardBatchAccountsBlockCount": 3,
"rewardsByHeight": [
{ "height": 1, "reward": 100 },
{ "height": 11, "reward": 10 },
{ "height": 21, "reward": 1 }
],
"sharesByLevelV1": [
{ "id": 1, "levels": [ 1, 2 ], "share": 0.05 },
{ "id": 2, "levels": [ 3, 4 ], "share": 0.10 },
{ "id": 3, "levels": [ 5, 6 ], "share": 0.15 },
{ "id": 4, "levels": [ 7, 8 ], "share": 0.20 },
{ "id": 5, "levels": [ 9, 10 ], "share": 0.25 }
],
"sharesByLevelV2": [
{ "id": 1, "levels": [ 1, 2 ], "share": 0.06 },
{ "id": 2, "levels": [ 3, 4 ], "share": 0.13 },
{ "id": 3, "levels": [ 5, 6 ], "share": 0.19 },
{ "id": 4, "levels": [ 7, 8 ], "share": 0.26 },
{ "id": 5, "levels": [ 9, 10 ], "share": 0.32 }
],
"qoraHoldersShareByHeight": [
{ "height": 1, "share": 0.20 },
{ "height": 1000000, "share": 0.01 }
],
"qoraPerQortReward": 250,
"minAccountsToActivateShareBin": 0,
"shareBinActivationMinLevel": 7,
"blocksNeededByLevel": [ 5, 20, 30, 40, 50, 60, 18, 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,
"sharesByLevelV2Height": 999999,
"rewardShareLimitTimestamp": 9999999999999,
"calcChainWeightTimestamp": 0,
"transactionV5Timestamp": 0,
"transactionV6Timestamp": 0,
"disableReferenceTimestamp": 9999999999999,
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 30,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 99999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950
},
"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": "UPDATE_GROUP", "ownerPublicKey": "2tiMr5LTpaWCgbRvkPK8TFd7k63DyHJMMFFsz9uBf1ZP", "groupId": 1, "newOwner": "QdSnUy6sUiEnaN87dWmE92g1uQjrvPgrWG", "newDescription": "developer group", "newIsOpen": false, "newApprovalThreshold": "PCT40", "minimumBlockDelay": 10, "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": "QixPbJUwsaHsVEofJdozU9zgVqkK6aYhrK", "level": 5 },
{ "type": "REWARD_SHARE", "minterPublicKey": "C6wuddsBV3HzRrXUtezE7P5MoRXp5m3mEDokRDGZB6ry", "recipient": "QixPbJUwsaHsVEofJdozU9zgVqkK6aYhrK", "rewardSharePublicKey": "CcABzvk26TFEHG7Yok84jxyd4oBtLkx8RJdGFVz2csvp", "sharePercent": 100 },
{ "type": "ACCOUNT_LEVEL", "target": "Qci5m9k4rcwe4ruKrZZQKka4FzUUMut3er", "level": 5 },
{ "type": "ACCOUNT_LEVEL", "target": "QaUpHNhT3Ygx6avRiKobuLdusppR5biXjL", "level": 5 },
{ "type": "ACCOUNT_LEVEL", "target": "Qci5m9k4rcwe4ruKrZZQKka4FzUUMut3er", "level": 6 }
]
}
}

View File

@@ -0,0 +1,132 @@
{
"isTestChain": true,
"blockTimestampMargin": 500,
"transactionExpiryPeriod": 86400000,
"maxBlockSize": 2097152,
"maxBytesPerUnitFee": 0,
"unitFees": [
{ "timestamp": 0, "fee": "0.00000001" }
],
"nameRegistrationUnitFees": [
{ "timestamp": 0, "fee": "0.00000001" },
{ "timestamp": 1645372800000, "fee": "5" }
],
"requireGroupForApproval": false,
"minAccountLevelToRewardShare": 5,
"maxRewardSharesPerFounderMintingAccount": 20,
"maxRewardSharesByTimestamp": [
{ "timestamp": 0, "maxShares": 20 },
{ "timestamp": 9999999999999, "maxShares": 3 }
],
"founderEffectiveMintingLevel": 10,
"onlineAccountSignaturesMinLifetime": 3600000,
"onlineAccountSignaturesMaxLifetime": 86400000,
"onlineAccountsModulusV2Timestamp": 9999999999999,
"selfSponsorshipAlgoV1SnapshotTimestamp": 0,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
"blockRewardBatchAccountsBlockCount": 3,
"rewardsByHeight": [
{ "height": 1, "reward": 100 },
{ "height": 11, "reward": 10 },
{ "height": 21, "reward": 1 }
],
"sharesByLevelV1": [
{ "id": 1, "levels": [ 1, 2 ], "share": 0.05 },
{ "id": 2, "levels": [ 3, 4 ], "share": 0.10 },
{ "id": 3, "levels": [ 5, 6 ], "share": 0.15 },
{ "id": 4, "levels": [ 7, 8 ], "share": 0.20 },
{ "id": 5, "levels": [ 9, 10 ], "share": 0.25 }
],
"sharesByLevelV2": [
{ "id": 1, "levels": [ 1, 2 ], "share": 0.06 },
{ "id": 2, "levels": [ 3, 4 ], "share": 0.13 },
{ "id": 3, "levels": [ 5, 6 ], "share": 0.19 },
{ "id": 4, "levels": [ 7, 8 ], "share": 0.26 },
{ "id": 5, "levels": [ 9, 10 ], "share": 0.32 }
],
"qoraHoldersShareByHeight": [
{ "height": 1, "share": 0.20 },
{ "height": 1000000, "share": 0.01 }
],
"qoraPerQortReward": 250,
"minAccountsToActivateShareBin": 0,
"shareBinActivationMinLevel": 7,
"blocksNeededByLevel": [ 5, 20, 30, 40, 50, 60, 28, 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,
"sharesByLevelV2Height": 999999,
"rewardShareLimitTimestamp": 9999999999999,
"calcChainWeightTimestamp": 0,
"transactionV5Timestamp": 0,
"transactionV6Timestamp": 0,
"disableReferenceTimestamp": 9999999999999,
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 30,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 99999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950
},
"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": "UPDATE_GROUP", "ownerPublicKey": "2tiMr5LTpaWCgbRvkPK8TFd7k63DyHJMMFFsz9uBf1ZP", "groupId": 1, "newOwner": "QdSnUy6sUiEnaN87dWmE92g1uQjrvPgrWG", "newDescription": "developer group", "newIsOpen": false, "newApprovalThreshold": "PCT40", "minimumBlockDelay": 10, "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": "QixPbJUwsaHsVEofJdozU9zgVqkK6aYhrK", "level": 5 },
{ "type": "REWARD_SHARE", "minterPublicKey": "C6wuddsBV3HzRrXUtezE7P5MoRXp5m3mEDokRDGZB6ry", "recipient": "QixPbJUwsaHsVEofJdozU9zgVqkK6aYhrK", "rewardSharePublicKey": "CcABzvk26TFEHG7Yok84jxyd4oBtLkx8RJdGFVz2csvp", "sharePercent": 100 },
{ "type": "ACCOUNT_LEVEL", "target": "Qci5m9k4rcwe4ruKrZZQKka4FzUUMut3er", "level": 5 },
{ "type": "ACCOUNT_LEVEL", "target": "QaUpHNhT3Ygx6avRiKobuLdusppR5biXjL", "level": 5 },
{ "type": "ACCOUNT_LEVEL", "target": "Qci5m9k4rcwe4ruKrZZQKka4FzUUMut3er", "level": 6 }
]
}
}

View File

@@ -25,6 +25,8 @@
"onlineAccountsModulusV2Timestamp": 9999999999999,
"selfSponsorshipAlgoV1SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV2SnapshotTimestamp": 9999999999999,
"selfSponsorshipAlgoV3SnapshotTimestamp": 9999999999999,
"referenceTimestampBlock": 9999999999999,
"mempowTransactionUpdatesTimestamp": 0,
"blockRewardBatchStartHeight": 999999000,
"blockRewardBatchSize": 10,
@@ -87,14 +89,14 @@
"increaseOnlineAccountsDifficultyTimestamp": 9999999999999,
"onlineAccountMinterLevelValidationHeight": 0,
"selfSponsorshipAlgoV1Height": 999999999,
"selfSponsorshipAlgoV2Height": 999999999,
"selfSponsorshipAlgoV3Height": 999999999,
"feeValidationFixTimestamp": 0,
"chatReferenceTimestamp": 0,
"arbitraryOptionalFeeTimestamp": 0,
"unconfirmableRewardSharesHeight": 99999999,
"selfSponsorshipAlgoV2Height": 9999999,
"disableTransferPrivsTimestamp": 9999999999500,
"enableTransferPrivsTimestamp": 9999999999950,
"penaltyFixHeight": 9999999
"enableTransferPrivsTimestamp": 9999999999950
},
"genesisInfo": {
"version": 4,

View File

@@ -0,0 +1,20 @@
{
"repositoryPath": "testdb",
"bitcoinNet": "TEST3",
"litecoinNet": "TEST3",
"restrictedApi": false,
"blockchainConfig": "src/test/resources/test-chain-v2-self-sponsorship-algo-v2.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,
"arrrDefaultBirthday": 1900000
}

View File

@@ -0,0 +1,20 @@
{
"repositoryPath": "testdb",
"bitcoinNet": "TEST3",
"litecoinNet": "TEST3",
"restrictedApi": false,
"blockchainConfig": "src/test/resources/test-chain-v2-self-sponsorship-algo-v3.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,
"arrrDefaultBirthday": 1900000
}