Browse Source

Prevent arbitrary data transactions being created unless the network supports it (i.e. the hard fork has taken place).

qdn
CalDescent 3 years ago
parent
commit
b7bcd8da7d
  1. 12
      src/main/java/org/qortal/arbitrary/ArbitraryDataTransactionBuilder.java

12
src/main/java/org/qortal/arbitrary/ArbitraryDataTransactionBuilder.java

@ -31,6 +31,9 @@ public class ArbitraryDataTransactionBuilder {
private static final Logger LOGGER = LogManager.getLogger(ArbitraryDataTransactionBuilder.class);
// Min transaction version required
private static final int MIN_TRANSACTION_VERSION = 5;
// Maximum number of PATCH layers allowed
private static final int MAX_LAYERS = 10;
// Maximum size difference (out of 1) allowed for PATCH transactions
@ -132,6 +135,13 @@ public class ArbitraryDataTransactionBuilder {
private void createTransaction() throws DataException {
ArbitraryDataFile arbitraryDataFile = null;
try (final Repository repository = RepositoryManager.getRepository()) {
Long now = NTP.getTime();
// Ensure that this chain supports transactions necessary for complex arbitrary data
int transactionVersion = Transaction.getVersionByTimestamp(now);
if (transactionVersion < MIN_TRANSACTION_VERSION) {
throw new DataException(String.format("Transaction version unsupported on this blockchain."));
}
if (publicKey58 == null || path == null) {
throw new DataException("Missing public key or path");
@ -172,7 +182,7 @@ public class ArbitraryDataTransactionBuilder {
throw new DataException("Unable to calculate file digest");
}
final BaseTransactionData baseTransactionData = new BaseTransactionData(NTP.getTime(), Group.NO_GROUP,
final BaseTransactionData baseTransactionData = new BaseTransactionData(now, Group.NO_GROUP,
lastReference, creatorPublicKey, BlockChain.getInstance().getUnitFee(), null);
final int size = (int) arbitraryDataFile.size();
final int version = 5;

Loading…
Cancel
Save