Skip to content

Commit

Permalink
try to make transaction sign faster
Browse files Browse the repository at this point in the history
using 31 to add instead of 1000 before
  • Loading branch information
hispeedimagins committed Aug 2, 2018
1 parent 2eccdba commit f33d64b
Showing 1 changed file with 48 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
Expand Down Expand Up @@ -205,6 +206,8 @@ public void signMy(String chainId,ImmutablePair<PrivateKeyType, String> keys) {
boolean isCanonical = false;

Sha256Hash messageAsHash;
int nonce = 0;
//long t = System.currentTimeMillis();
while (!isCanonical) {
try {
messageAsHash = Sha256Hash.of(this.toByteArray(chainId));
Expand All @@ -216,10 +219,16 @@ public void signMy(String chainId,ImmutablePair<PrivateKeyType, String> keys) {
String signature = k.signMessage(messageAsHash);
byte[] signatureAsByteArray = Base64.decode(signature);


if (isCanonical(signatureAsByteArray)) {
this.getExpirationDate().setDateTime(this.getExpirationDate().getDateTimeAsTimestamp() + 1000);
nonce++;
this.getExpirationDate().setDateTime(this.getExpirationDate().getDateTimeAsTimestamp() + 31);
Log.d("nonce",String.valueOf(nonce));
//nonce++;
} else {
isCanonical = true;
//long et = System.currentTimeMillis();
//Log.d("sign time", "signMy: elapsed ms - "+String.valueOf(et - t));
this.signatures.add(CryptoUtils.HEX.encode(signatureAsByteArray));
}
}
Expand Down Expand Up @@ -363,6 +372,44 @@ protected byte[] toByteArray(String chainId) {
}
}

protected byte[] toByteArray(String chainId,int nonce) {
try (ByteArrayOutputStream serializedTransaction = new ByteArrayOutputStream()) {
if (chainId != null && !chainId.isEmpty()) {
serializedTransaction.write(CryptoUtils.HEX.decode(chainId));
}
serializedTransaction.write(Utilities.transformShortToByteArray(this.getRefBlockNum().shortValue()));
serializedTransaction.write(Utilities.transformIntToByteArray(this.getRefBlockPrefix().intValue()));
serializedTransaction.write(this.getExpirationDate().toByteArray());

serializedTransaction.write(Utilities.transformLongToVarIntByteArray(this.getOperations().size()));
int opsi = this.getOperations().size();
for (Operation operation : this.getOperations()) {
/*
* Validate all Operations
*
* TODO: Add a validation method to the Transaction Object?
*/
operation.validate(SteemJConfig.getInstance().getValidationLevel());
serializedTransaction.write(operation.toByteArray());
}

serializedTransaction.write(Utilities.transformIntToVarIntByteArray(this.getExtensions().size()));
for (FutureExtensions futureExtensions : this.getExtensions()) {
serializedTransaction.write(futureExtensions.toByteArray());
}

/*if(nonce != 0){
//serializedTransaction.write(Utilities.transformIntToByteArray(nonce));
serializedTransaction.write(Byte.valueOf(String.valueOf(nonce)));
}*/

return serializedTransaction.toByteArray();
} catch (IOException e) {
throw new RuntimeException(
"A problem occured while transforming the transaction into a byte array.", e);
}
}

@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
Expand Down

0 comments on commit f33d64b

Please sign in to comment.