mirror of
https://github.com/Qortal/qortal.git
synced 2025-07-26 11:41:24 +00:00
Merge branch 'disable-reference'
This commit is contained in:
@@ -70,7 +70,8 @@ public class BlockChain {
|
||||
shareBinFix,
|
||||
calcChainWeightTimestamp,
|
||||
transactionV5Timestamp,
|
||||
transactionV6Timestamp;
|
||||
transactionV6Timestamp,
|
||||
disableReferenceTimestamp
|
||||
}
|
||||
|
||||
// Custom transaction fees
|
||||
@@ -410,6 +411,10 @@ public class BlockChain {
|
||||
return this.featureTriggers.get(FeatureTrigger.transactionV6Timestamp.name()).longValue();
|
||||
}
|
||||
|
||||
public long getDisableReferenceTimestamp() {
|
||||
return this.featureTriggers.get(FeatureTrigger.disableReferenceTimestamp.name()).longValue();
|
||||
}
|
||||
|
||||
// More complex getters for aspects that change by height or timestamp
|
||||
|
||||
public long getRewardAtHeight(int ourHeight) {
|
||||
|
@@ -6,6 +6,7 @@ import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.qortal.account.Account;
|
||||
import org.qortal.block.BlockChain;
|
||||
import org.qortal.controller.arbitrary.ArbitraryDataManager;
|
||||
import org.qortal.controller.arbitrary.ArbitraryDataStorageManager;
|
||||
import org.qortal.crypto.Crypto;
|
||||
@@ -19,6 +20,7 @@ import org.qortal.repository.DataException;
|
||||
import org.qortal.repository.Repository;
|
||||
import org.qortal.arbitrary.ArbitraryDataFile;
|
||||
import org.qortal.transform.TransformationException;
|
||||
import org.qortal.transform.Transformer;
|
||||
import org.qortal.transform.transaction.ArbitraryTransactionTransformer;
|
||||
import org.qortal.transform.transaction.TransactionTransformer;
|
||||
import org.qortal.utils.ArbitraryTransactionUtils;
|
||||
@@ -86,6 +88,14 @@ public class ArbitraryTransaction extends Transaction {
|
||||
@Override
|
||||
public boolean hasValidReference() throws DataException {
|
||||
// We shouldn't really get this far, but just in case:
|
||||
|
||||
// Disable reference checking after feature trigger timestamp
|
||||
if (this.arbitraryTransactionData.getTimestamp() >= BlockChain.getInstance().getDisableReferenceTimestamp()) {
|
||||
// Allow any value as long as it is the correct length
|
||||
return this.arbitraryTransactionData.getReference() != null &&
|
||||
this.arbitraryTransactionData.getReference().length == Transformer.SIGNATURE_LENGTH;
|
||||
}
|
||||
|
||||
if (this.arbitraryTransactionData.getReference() == null) {
|
||||
return false;
|
||||
}
|
||||
|
@@ -5,6 +5,7 @@ import java.util.List;
|
||||
|
||||
import org.qortal.account.Account;
|
||||
import org.qortal.asset.Asset;
|
||||
import org.qortal.block.BlockChain;
|
||||
import org.qortal.crypto.Crypto;
|
||||
import org.qortal.data.asset.AssetData;
|
||||
import org.qortal.data.transaction.ATTransactionData;
|
||||
@@ -12,6 +13,7 @@ import org.qortal.data.transaction.TransactionData;
|
||||
import org.qortal.repository.DataException;
|
||||
import org.qortal.repository.Repository;
|
||||
import org.qortal.transform.TransformationException;
|
||||
import org.qortal.transform.Transformer;
|
||||
import org.qortal.transform.transaction.AtTransactionTransformer;
|
||||
import org.qortal.utils.Amounts;
|
||||
|
||||
@@ -75,6 +77,13 @@ public class AtTransaction extends Transaction {
|
||||
|
||||
@Override
|
||||
public boolean hasValidReference() throws DataException {
|
||||
// Disable reference checking after feature trigger timestamp
|
||||
if (this.atTransactionData.getTimestamp() >= BlockChain.getInstance().getDisableReferenceTimestamp()) {
|
||||
// Allow any value as long as it is the correct length
|
||||
return this.atTransactionData.getReference() != null &&
|
||||
this.atTransactionData.getReference().length == Transformer.SIGNATURE_LENGTH;
|
||||
}
|
||||
|
||||
// Check reference is correct, using AT account, not transaction creator which is null account
|
||||
Account atAccount = getATAccount();
|
||||
return Arrays.equals(atAccount.getLastReference(), atTransactionData.getReference());
|
||||
|
@@ -8,6 +8,7 @@ import org.qortal.account.Account;
|
||||
import org.qortal.account.PrivateKeyAccount;
|
||||
import org.qortal.account.PublicKeyAccount;
|
||||
import org.qortal.asset.Asset;
|
||||
import org.qortal.block.BlockChain;
|
||||
import org.qortal.crypto.Crypto;
|
||||
import org.qortal.crypto.MemoryPoW;
|
||||
import org.qortal.data.PaymentData;
|
||||
@@ -20,6 +21,7 @@ import org.qortal.repository.DataException;
|
||||
import org.qortal.repository.GroupRepository;
|
||||
import org.qortal.repository.Repository;
|
||||
import org.qortal.transform.TransformationException;
|
||||
import org.qortal.transform.Transformer;
|
||||
import org.qortal.transform.transaction.ChatTransactionTransformer;
|
||||
import org.qortal.transform.transaction.MessageTransactionTransformer;
|
||||
import org.qortal.transform.transaction.TransactionTransformer;
|
||||
@@ -163,6 +165,14 @@ public class MessageTransaction extends Transaction {
|
||||
@Override
|
||||
public boolean hasValidReference() throws DataException {
|
||||
// We shouldn't really get this far, but just in case:
|
||||
|
||||
// Disable reference checking after feature trigger timestamp
|
||||
if (this.messageTransactionData.getTimestamp() >= BlockChain.getInstance().getDisableReferenceTimestamp()) {
|
||||
// Allow any value as long as it is the correct length
|
||||
return this.messageTransactionData.getReference() != null &&
|
||||
this.messageTransactionData.getReference().length == Transformer.SIGNATURE_LENGTH;
|
||||
}
|
||||
|
||||
if (this.messageTransactionData.getReference() == null)
|
||||
return false;
|
||||
|
||||
|
@@ -31,6 +31,7 @@ import org.qortal.repository.GroupRepository;
|
||||
import org.qortal.repository.Repository;
|
||||
import org.qortal.settings.Settings;
|
||||
import org.qortal.transform.TransformationException;
|
||||
import org.qortal.transform.Transformer;
|
||||
import org.qortal.transform.transaction.TransactionTransformer;
|
||||
import org.qortal.utils.NTP;
|
||||
|
||||
@@ -905,6 +906,13 @@ public abstract class Transaction {
|
||||
* @throws DataException
|
||||
*/
|
||||
public boolean hasValidReference() throws DataException {
|
||||
// Disable reference checking after feature trigger timestamp
|
||||
if (this.transactionData.getTimestamp() >= BlockChain.getInstance().getDisableReferenceTimestamp()) {
|
||||
// Allow any value as long as it is the correct length
|
||||
return this.transactionData.getReference() != null &&
|
||||
this.transactionData.getReference().length == Transformer.SIGNATURE_LENGTH;
|
||||
}
|
||||
|
||||
Account creator = getCreator();
|
||||
|
||||
return Arrays.equals(transactionData.getReference(), creator.getLastReference());
|
||||
|
Reference in New Issue
Block a user