Guest User

Untitled

a guest
May 25th, 2018
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. public static void main(String[] args) throws UnirestException, NoSuchAlgorithmException {
  2.  
  3.  
  4. ECKey privateKey = Signing.readWif(getWifKey("c1783ac6bf55910ab9bfa6defbd7b819a5b29032dd281fa1976363fd6e08d59d")); //generated pk by sawtooth keygen
  5. String publicKey = Signing.getPublicKey(privateKey);
  6.  
  7. ByteString publicKeyByteString = ByteString.copyFromUtf8(publicKey);
  8.  
  9. String payload = "deposit,50,02e664d454c7841ae1e2bd9a597dd12b2fa09f9389b29ab9fda6220674ff7bc7b8";
  10. String payloadBytes = Utils.hash512(payload.getBytes());
  11. ByteString payloadByteString = ByteString.copyFrom(payload.getBytes());
  12.  
  13. TransactionHeader txnHeader = TransactionHeader.newBuilder()
  14. .setBatcherPublicKeyBytes(publicKeyByteString)
  15. .setSignerPublicKeyBytes(publicKeyByteString)
  16. .setFamilyName("simplewallet")
  17. .setFamilyVersion("1.0")
  18. .addInputs(publicKey)
  19. .setNonce("1")
  20. .addOutputs("02e664d454c7841ae1e2bd9a597dd12b2fa09f9389b29ab9fda6220674ff7bc7b8")//recipient public key
  21. .setPayloadSha512(payloadBytes)
  22. .setSignerPublicKey(publicKey)
  23. .build();
  24. ByteString txnHeaderBytes = txnHeader.toByteString();
  25. String txnHeaderSignature = Signing.sign(privateKey, txnHeaderBytes.toByteArray());
  26.  
  27. Transaction txn = Transaction.newBuilder()
  28. .setHeader(txnHeaderBytes)
  29. .setPayload(payloadByteString)
  30. .setHeaderSignature(txnHeaderSignature)
  31. .build();
  32.  
  33. BatchHeader batchHeader = BatchHeader.newBuilder()
  34. .setSignerPublicKey(publicKey)
  35. .addTransactionIds(txn.getHeaderSignature())
  36. .build();
  37. ByteString batchHeaderBytes = batchHeader.toByteString();
  38. String batchHeaderSignature = Signing.sign(privateKey, batchHeaderBytes.toByteArray());
  39.  
  40. Batch batch = Batch.newBuilder()
  41. .setHeader(batchHeaderBytes)
  42. .setHeaderSignature(batchHeaderSignature)
  43. .addTransactions(txn)
  44. .build();
  45.  
  46. BatchList batchList = BatchList.newBuilder()
  47. .addBatches(batch)
  48. .build();
  49. ByteString batchBytes = batchList.toByteString();
  50.  
  51. String serverResponse = Unirest.post("http://localhost:8008/batches")
  52. .header("Content-Type", "application/octet-stream")
  53. .body(batchBytes.toByteArray())
  54. .asString()
  55. .getBody();
  56.  
  57. System.out.println(serverResponse);
  58.  
  59. }
  60.  
  61. private static String getWifKey(String sourceKey) throws NoSuchAlgorithmException {
  62.  
  63. sourceKey = "80" + sourceKey;
  64.  
  65. byte[] pkByteArr = hexStringToByteArray(sourceKey);
  66.  
  67. MessageDigest digest = MessageDigest.getInstance("SHA-256");
  68. byte[] hash = digest.digest(pkByteArr);
  69.  
  70. byte[] secondHash = digest.digest(hash);
  71.  
  72. byte[] resPkBytes = new byte[pkByteArr.length + 4];
  73.  
  74. System.arraycopy(pkByteArr, 0, resPkBytes, 0, pkByteArr.length);
  75.  
  76. System.arraycopy(secondHash, 0, resPkBytes, pkByteArr.length, 4);
  77.  
  78. return Base58.encode(resPkBytes);
  79. }
  80.  
  81. private static byte[] hexStringToByteArray(String s) {
  82. int len = s.length();
  83. byte[] data = new byte[len / 2];
  84. for (int i = 0; i < len; i += 2) {
  85. data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
  86. + Character.digit(s.charAt(i + 1), 16));
  87. }
  88. return data;
  89. }
Add Comment
Please, Sign In to add comment