Important FIX to payment-related isValid()!

Non-native-coin payments (e.g. transfer-asset) didn't build map
for checking whether sender had enough balance.

Also fixed raw layout description for TRANSFER_ASSET.

Also fixed ISSUE_ASSET deserialization to use empty string (instead
of null) for v1 transactions.
This commit is contained in:
catbref 2019-03-25 11:23:18 +00:00
parent eb038b8f31
commit 2a45e27048
3 changed files with 3 additions and 3 deletions

View File

@ -79,7 +79,7 @@ public class Payment {
return ValidationResult.INVALID_AMOUNT; return ValidationResult.INVALID_AMOUNT;
// Set or add amount into amounts-by-asset map // Set or add amount into amounts-by-asset map
amountsByAssetId.compute(paymentData.getAssetId(), (assetId, amount) -> amount == null ? amount : amount.add(paymentData.getAmount())); amountsByAssetId.compute(paymentData.getAssetId(), (assetId, amount) -> amount == null ? paymentData.getAmount() : amount.add(paymentData.getAmount()));
} }
// Check sender has enough of each asset // Check sender has enough of each asset

View File

@ -76,7 +76,7 @@ public class IssueAssetTransactionTransformer extends TransactionTransformer {
boolean isDivisible = byteBuffer.get() != 0; boolean isDivisible = byteBuffer.get() != 0;
// in v2, assets have "data" field // in v2, assets have "data" field
String data = null; String data = "";
if (timestamp >= BlockChain.getInstance().getQoraV2Timestamp()) if (timestamp >= BlockChain.getInstance().getQoraV2Timestamp())
data = Serialization.deserializeSizedString(byteBuffer, Asset.MAX_DATA_SIZE); data = Serialization.deserializeSizedString(byteBuffer, Asset.MAX_DATA_SIZE);

View File

@ -32,7 +32,7 @@ public class TransferAssetTransactionTransformer extends TransactionTransformer
layout.add("transaction's groupID", TransformationType.INT); layout.add("transaction's groupID", TransformationType.INT);
layout.add("reference", TransformationType.SIGNATURE); layout.add("reference", TransformationType.SIGNATURE);
layout.add("asset owner's public key", TransformationType.PUBLIC_KEY); layout.add("asset owner's public key", TransformationType.PUBLIC_KEY);
layout.add("asset's new owner", TransformationType.ADDRESS); layout.add("asset quantity", TransformationType.ASSET_QUANTITY);
layout.add("asset ID", TransformationType.LONG); layout.add("asset ID", TransformationType.LONG);
layout.add("fee", TransformationType.AMOUNT); layout.add("fee", TransformationType.AMOUNT);
layout.add("signature", TransformationType.SIGNATURE); layout.add("signature", TransformationType.SIGNATURE);