Fix for transaction process RLP and nonce update on block

This commit is contained in:
romanman 2014-05-21 20:39:23 +03:00
parent b52da2cf4a
commit 2f73b98614
3 changed files with 10 additions and 4 deletions

View File

@ -97,12 +97,15 @@ public class Wallet {
for (Transaction tx : transactions){ for (Transaction tx : transactions){
byte[] senderAddress = tx.sender(); byte[] senderAddress = tx.sender();
AddressState senderState = rows.get(Hex.toHexString(senderAddress)); AddressState senderState = rows.get(Hex.toHexString(senderAddress));
if (senderState != null){ if (senderState != null){
BigInteger value = new BigInteger(tx.getValue()); BigInteger value = new BigInteger(tx.getValue());
senderState.addToBalance(value.negate()); senderState.addToBalance(value.negate());
senderState.incrementTheNonce();
walletUpdated = true; walletUpdated = true;
} }

View File

@ -69,7 +69,7 @@ class PayOutDialog extends JDialog {
BigInteger value = new BigInteger(amountInput.getText()); BigInteger value = new BigInteger(amountInput.getText());
byte[] address = Hex.decode(receiverInput.getText()); byte[] address = Hex.decode(receiverInput.getText());
byte[] senderPrivKey = HashUtil.sha3(addressState.getEcKey().getPrivKeyBytes()); byte[] senderPrivKey = addressState.getEcKey().getPrivKeyBytes();
byte[] nonce = addressState.getNonce() == BigInteger.ZERO ? byte[] nonce = addressState.getNonce() == BigInteger.ZERO ?
null : addressState.getNonce().toByteArray(); null : addressState.getNonce().toByteArray();
@ -88,7 +88,6 @@ class PayOutDialog extends JDialog {
} }
peer.sendTransaction(tx); peer.sendTransaction(tx);
addressState.incrementTheNonce();
} }
} }
); );

View File

@ -788,8 +788,12 @@ public class RLP {
public static byte[] encodeElement(byte[] srcData) { public static byte[] encodeElement(byte[] srcData) {
if (srcData == null){ if (srcData == null) {
return new byte[] { (byte) 0x80 }; return new byte[]{(byte) 0x80};
} if (srcData.length == 1 && srcData[0] < 0x80) {
return srcData;
} else if (srcData.length <= 0x37) { } else if (srcData.length <= 0x37) {
// length = 8X // length = 8X
byte length = (byte) (OFFSET_SHORT_ITEM + srcData.length); byte length = (byte) (OFFSET_SHORT_ITEM + srcData.length);