Browse Source

BlockChain.isTestNet now BlockChain.isTestChain.

Added Settings.isTestNet.

Disabled ArbitraryDataManager for now.
pull/67/head
catbref 5 years ago
parent
commit
915eebb8e5
  1. 6
      src/main/java/org/qora/block/Block.java
  2. 6
      src/main/java/org/qora/block/BlockChain.java
  3. 6
      src/main/java/org/qora/block/BlockGenerator.java
  4. 6
      src/main/java/org/qora/block/GenesisBlock.java
  5. 14
      src/main/java/org/qora/controller/Controller.java
  6. 7
      src/main/java/org/qora/network/Network.java
  7. 6
      src/main/java/org/qora/network/message/Message.java
  8. 15
      src/main/java/org/qora/settings/Settings.java
  9. 2
      src/test/java/org/qora/test/SettingsTests.java
  10. 2
      src/test/resources/test-chain-old-asset.json
  11. 2
      src/test/resources/test-chain-v2.json

6
src/main/java/org/qora/block/Block.java

@ -784,7 +784,7 @@ public class Block {
* Returns whether Block's timestamp is valid.
* <p>
* Used by BlockGenerator to check whether it's time to forge new block,
* and also used by Block.isValid for checks (if not testnet).
* and also used by Block.isValid for checks (if not a testchain).
*
* @return ValidationResult.OK if timestamp valid, or some other ValidationResult otherwise.
* @throws DataException
@ -844,8 +844,8 @@ public class Block {
if (this.blockData.getTimestamp() <= parentBlockData.getTimestamp())
return ValidationResult.TIMESTAMP_OLDER_THAN_PARENT;
// These checks are disabled for testnet
if (!BlockChain.getInstance().isTestNet()) {
// These checks are disabled for testchains
if (!BlockChain.getInstance().isTestChain()) {
ValidationResult timestampResult = this.isTimestampValid();
if (timestampResult != ValidationResult.OK)

6
src/main/java/org/qora/block/BlockChain.java

@ -48,7 +48,7 @@ public class BlockChain {
// Properties
private boolean isTestNet = false;
private boolean isTestChain = false;
/** Maximum coin supply. */
private BigDecimal maxBalance;
@ -204,8 +204,8 @@ public class BlockChain {
// Getters / setters
public boolean isTestNet() {
return this.isTestNet;
public boolean isTestChain() {
return this.isTestChain;
}
public BigDecimal getUnitFee() {

6
src/main/java/org/qora/block/BlockGenerator.java

@ -150,7 +150,7 @@ public class BlockGenerator extends Thread {
for (Block testBlock : newBlocks) {
// Is new block's timestamp valid yet?
// We do a separate check as some timestamp checks are skipped for testnet
// We do a separate check as some timestamp checks are skipped for testchains
if (testBlock.isTimestampValid() != ValidationResult.OK)
continue;
@ -308,8 +308,8 @@ public class BlockGenerator extends Thread {
}
public static void generateTestingBlock(Repository repository, PrivateKeyAccount generator) throws DataException {
if (!BlockChain.getInstance().isTestNet()) {
LOGGER.warn("Attempt to generating testing block but not in testnet mode!");
if (!BlockChain.getInstance().isTestChain()) {
LOGGER.warn("Ignoring attempt to generate testing block for non-test chain!");
return;
}

6
src/main/java/org/qora/block/GenesisBlock.java

@ -79,9 +79,9 @@ public class GenesisBlock extends Block {
// Timestamp of zero means "now" but only valid for test nets!
if (info.timestamp == 0) {
if (!blockchain.isTestNet()) {
LOGGER.error("Genesis timestamp of zero (i.e. now) not valid for non-testnet blockchain configs");
throw new RuntimeException("Genesis timestamp of zero (i.e. now) not valid for non-testnet blockchain configs");
if (!blockchain.isTestChain()) {
LOGGER.error("Genesis timestamp of zero (i.e. now) not valid for non-test blockchain configs");
throw new RuntimeException("Genesis timestamp of zero (i.e. now) not valid for non-test blockchain configs");
}
// This will only take effect if there is no current genesis block in blockchain

14
src/main/java/org/qora/controller/Controller.java

@ -152,12 +152,6 @@ public class Controller extends Thread {
return String.format(repositoryUrlTemplate, Settings.getInstance().getRepositoryPath());
}
public byte[] getMessageMagic() {
return new byte[] {
0x12, 0x34, 0x56, 0x78
};
}
public long getBuildTimestamp() {
return this.buildTimestamp;
}
@ -257,8 +251,8 @@ public class Controller extends Thread {
Controller.getInstance().start();
// Arbitrary transaction data manager
LOGGER.info("Starting arbitrary-transaction data manager");
ArbitraryDataManager.getInstance().start();
// LOGGER.info("Starting arbitrary-transaction data manager");
// ArbitraryDataManager.getInstance().start();
// Auto-update service
LOGGER.info("Starting auto-update");
@ -393,8 +387,8 @@ public class Controller extends Thread {
AutoUpdate.getInstance().shutdown();
// Arbitrary transaction data manager
LOGGER.info("Shutting down arbitrary-transaction data manager");
ArbitraryDataManager.getInstance().shutdown();
// LOGGER.info("Shutting down arbitrary-transaction data manager");
// ArbitraryDataManager.getInstance().shutdown();
LOGGER.info("Shutting down controller");
this.interrupt();

7
src/main/java/org/qora/network/Network.java

@ -66,6 +66,9 @@ public class Network extends Thread {
/** Maximum time since last successful connection before a peer is potentially considered "old", in milliseconds. */
private static final long OLD_PEER_CONNECTION_PERIOD = 7 * 24 * 60 * 60 * 1000; // ms
private static final byte[] MAINNET_MESSAGE_MAGIC = new byte[] { 0x12, 0x34, 0x56, 0x78 };
private static final byte[] TESTNET_MESSAGE_MAGIC = new byte[] { 0x78, 0x56, 0x34, 0x12 };
private static final String[] INITIAL_PEERS = new String[] {
"node1.qora.org",
"node2.qora.org",
@ -164,6 +167,10 @@ public class Network extends Thread {
}
}
public byte[] getMessageMagic() {
return Settings.getInstance().isTestNet() ? TESTNET_MESSAGE_MAGIC : MAINNET_MESSAGE_MAGIC;
}
// Initial setup
public static void installInitialPeers(Repository repository) throws DataException {

6
src/main/java/org/qora/network/message/Message.java

@ -2,8 +2,8 @@ package org.qora.network.message;
import java.util.Map;
import org.qora.controller.Controller;
import org.qora.crypto.Crypto;
import org.qora.network.Network;
import com.google.common.primitives.Ints;
@ -153,7 +153,7 @@ public abstract class Message {
byte[] messageMagic = new byte[MAGIC_LENGTH];
in.readFully(messageMagic);
if (!Arrays.equals(messageMagic, Controller.getInstance().getMessageMagic()))
if (!Arrays.equals(messageMagic, Network.getInstance().getMessageMagic()))
// Didn't receive correct Message "magic"
throw new MessageException("Received incorrect message 'magic'");
@ -212,7 +212,7 @@ public abstract class Message {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
// Magic
bytes.write(Controller.getInstance().getMessageMagic());
bytes.write(Network.getInstance().getMessageMagic());
bytes.write(Ints.toByteArray(this.type.value));

15
src/main/java/org/qora/settings/Settings.java

@ -26,6 +26,7 @@ import org.qora.block.BlockChain;
public class Settings {
public static final int DEFAULT_LISTEN_PORT = 9084;
public static final int DEFAULT_TESTNET_PORT = 9184;
private static final Logger LOGGER = LogManager.getLogger(Settings.class);
private static final String SETTINGS_FILENAME = "settings.json";
@ -62,7 +63,8 @@ public class Settings {
private boolean autoUpdateEnabled = true;
// Peer-to-peer related
private int listenPort = DEFAULT_LISTEN_PORT;
private boolean isTestNet = false;
private Integer listenPort;
private String bindAddress = "::"; // Use IPv6 wildcard to listen on all local addresses
/** Minimum number of peers to allow block generation / synchronization. */
private int minBlockchainPeers = 3;
@ -220,7 +222,7 @@ public class Settings {
return this.apiRestricted;
// Not set in config file, so restrict if not testnet
return !BlockChain.getInstance().isTestNet();
return !BlockChain.getInstance().isTestChain();
}
public boolean isApiLoggingEnabled() {
@ -239,8 +241,15 @@ public class Settings {
return this.maxTransactionTimestampFuture;
}
public boolean isTestNet() {
return this.isTestNet;
}
public int getListenPort() {
return this.listenPort;
if (this.listenPort != null)
return this.listenPort;
return this.isTestNet ? DEFAULT_TESTNET_PORT : DEFAULT_LISTEN_PORT;
}
public String getBindAddress() {

2
src/test/java/org/qora/test/SettingsTests.java

@ -53,7 +53,7 @@ public class SettingsTests {
BlockChain blockchain = unmarshaller.unmarshal(json, BlockChain.class).getValue();
System.out.println("BlockChain settings:");
System.out.println(String.format("TestNet: %s", yn(blockchain.isTestNet())));
System.out.println(String.format("TestChain: %s", yn(blockchain.isTestChain())));
}
}

2
src/test/resources/test-chain-old-asset.json

@ -1,5 +1,5 @@
{
"isTestNet": true,
"isTestChain": true,
"maxBalance": "10000000000",
"blockDifficultyInterval": 10,
"minBlockTime": 30,

2
src/test/resources/test-chain-v2.json

@ -1,5 +1,5 @@
{
"isTestNet": true,
"isTestChain": true,
"maxBalance": "10000000000",
"blockDifficultyInterval": 10,
"minBlockTime": 30,

Loading…
Cancel
Save